perm filename MEMO.PUB[HAL,HE] blob sn#133596 filedate 1974-12-03 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00007 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	.FIGS←TRUE
C00010 00003	.device xgp
C00011 00004	.NEXT PAGE
C00014 00005	.ADJUST COMPACT
C00015 00006	.REQUIRE "MINTRO.PUB" SOURCE_FILE <<MEMO25(2) Introduction>>
C00018 00007	.PORTION CONTENTS
C00022 ENDMK
C⊗;
.FIGS←TRUE;
.STD_SPREAD ← 1;

.<<PUB STATEMENTS>>

.TURN ON "∞π↑↓[]{_α#←→&∂";
.TURN OFF TAB;
.STD_PREFACE← 2*STD_SPREAD - 1;
.SPREAD ← STD_SPREAD ;
.PREFACE STD_PREFACE ;
.NOFILL; PREFACE SPREAD-1; FILL;

.MACRO UNFILL ⊂BEGIN NOFILL;TURN OFF "←→";PREFACE SPREAD-1;SKIP 2-SPREAD;GROUP⊃;
.MACRO MATRIX ⊂BEGIN NOFILL PREFACE 0 SKIP SPREAD GROUP⊃
.MACRO REFILL ⊂END; SKIP 2-SPREAD; CONTINUE⊃;
.MACRO MAYBREAK ⊂APART;GROUP;⊃;
.MACRO BULL ⊂ONCE; FLUSH LEFT⊃;
.MACRO REPART ⊂END; SKIP 2-SPREAD; APART⊃;
.MACRO COMT(X) ⊂BEGIN FILL;INDENT X,X;PREFACE 0;}%4{⊃

.COUNT SECTION FROM 1 TO 99 PRINTING ⊂SECTION⊃;
.COUNT SUBSEC FROM 0 TO 99 IN SECTION PRINTING "!.1";
.COUNT SUBSUBSEC FROM 0 TO 99 IN SUBSEC PRINTING "!.1";
.COUNT FOOTNOTE INLINE FROM 1 TO 9 IN PAGE;

.MACRO NEWSEC(TITLE,ID) ⊂
.NEXT SECTION!;
.IF PICLIN≠NULL THEN ALLPIC;
.SECNAME←NULL;
.SSECNAME←NULL;
.SSSNUM←NULL
.NEXT SUBSEC;FIGURE←0;TABLE←0;
.SECNAME←"TITLE";
.SSECNAME←"ID";
.SKIP TO COLUMN 1; BEGIN CENTER;
%5{SECID} {SECTION!}%*
%6{SECNAME}%*
.END
.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
.BEGIN 
.NEXT PAGE
{SECID}→PAGE
.END

{SECTION!}  TITLE →{PAGE!}
.⊃
.SECNAME←"TITLE";⊃



.MACRO NEWSS(TITLE,ID,LAB) ⊂
.NEXT SUBSEC!;
.IF PICLIN≠NULL THEN ALLPIC;
.SSSNUM←SUBSEC!
.NEXT SUBSUBSEC;
.IF LINES≤10*SPREAD THEN NEXT PAGE ELSE SKIP 4*SPREAD;
.SSECNAME←"ID";
.IF SSECNAME=NULL THEN SSECNAME←"TITLE";
%5{SUBSEC!}      TITLE%*
.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
.BEGIN 
.NEXT PAGE
{SECID}→PAGE
.END
    {SUBSEC!}  TITLE →{PAGE!}
.⊃
.⊃

.MACRO NEWSSS(TITLE,LAB) ⊂
.NEXT SUBSUBSEC!;
.IF PICLIN≠NULL THEN ALLPIC;
.SSSNUM←SUBSUBSEC!
.IF LINES≤8*SPREAD THEN NEXT PAGE ELSE SKIP 2*SPREAD;
%4{SUBSUBSEC!}     TITLE%*
.BREAK
.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
.BEGIN 
.NEXT PAGE
{SECID}→PAGE
.END
	{SUBSUBSEC!}  TITLE →{PAGE!}
.⊃
.⊃


.COUNT EQUATION INLINE IN SECTION PRINTING "!.1"

.MACRO NEWEQ⊂
.NEXT EQUATION!;TURN ON "→";"→[Eq. ";EQUATION!;"]";TURN OFF "→";⊃

.MACRO EQREF(LBL)⊂"Equation ";EQUATION! LBL⊃
.MACRO SECREF(LBL)⊂"Chapter ";SECTION! LBL⊃
.MACRO SSREF(LBL)⊂"Section ";SUBSEC! LBL ⊃
.MACRO SSSREF(LBL)⊂"subsection ";SUBSUBSEC! LBL⊃
.MACRO APREF(LBL)⊂"Appendix ";SECTION! LBL⊃
.MACRO FIGREF(LBL)⊂"Figure ";FIGURE   LBL⊃
.MACRO TABREF(LBL)⊂"Table "; LBL⊃
.AT NULL ⊂IF FILLING THEN
.    START BREAK;
.    IF LINES<2*SPREAD+1 THEN NEXT PAGE END
.  ELSE SKIP SPREAD⊃;

.RECURSIVE MACRO STOREPIC(TITLE,LINES,TEMP) ⊂START
.PICLIN←PICLIN&"  "[1 TO 2-LENGTH("LINES")]&"LINES";
.PICNUM←PICNUM&"    "[1 TO 4-LENGTH(TEMP)]&TEMP;
.PICTLEN←PICTLEN&"  "[1 TO 2-LENGTH(LENGTH("TITLE"))]&LENGTH("TITLE");
.PICTIT←PICTIT&"TITLE";
.END⊃

.MACRO NEWFIG(TITLE,εLINES,LABEL) ⊂
.FIGURE←FIGURE+1; LABEL TEMP←SECTION&"."&FIGURE; }Figure {TEMP;
.STOREPIC(|TITLE|,LINES,TEMP) ⊃;

.MACRO MAKEFIG(TITLE,εLINES,LABEL) ⊂
.FIGURE←FIGURE+1;LABEL TEMP←SECTION&"."&FIGURE;
.STOREPIC(|TITLE|,LINES,TEMP) ⊃;

.PICLIN←PICNUM←PICTLEN←PICTIT←NULL
.MACRO SMALLPIC⊂⊃
.MACRO ALLPIC⊂⊃

.MACRO NEWTABLE(TITLE,LABEL)⊂
.TABLE←TABLE+1; LABEL TEMP←SECTION&"."&TABLE;
.BEGIN NOFILL CENTER GROUP

Table {TEMP}

TITLE
.⊃;

.IF FIGS THEN START

.MACRO PLACEPIC ⊂BEGIN CENTER PREFACE SPREAD-1
.A←PICLIN[1 TO 2]; B←PICNUM[1 TO 4];
.C←PICTLEN[1 TO 2]; D←PICTIT[1 TO C];
.PICLIN←PICLIN[3 TO ∞]; PICNUM←PICNUM[5 TO ∞];
.PICTLEN←PICTLEN[3 TO ∞]; PICTIT←PICTIT[C+1 TO ∞];
.GROUP SKIP A;
Figure {B}
{D}
.SKIP 2*SPREAD;
.END⊃

.RECURSIVE MACRO RSPIC ⊂
.IF LINES-3*SPREAD≥PICLIN[1 TO 2] THEN PLACEPIC
.ELSE START
.	TLIN←TLIN&PICLIN[1 TO 2]; PICLIN←PICLIN[3 TO ∞];
.	TNUM←TNUM&PICNUM[1 TO 4]; PICNUM←PICNUM[5 TO ∞];
.	C←PICTLEN[1 TO 2];
.	TTLEN←TTLEN&C; PICTLEN←PICTLEN[3 TO ∞];
.	TTIT←TTIT&PICTIT[1 TO C]; PICTIT←PICTIT[C+1 TO ∞];
.	END;
.IF PICLIN≠NULL THEN RSPIC⊃

.RECURSIVE MACRO SMALLPIC ⊂
.TLIN←TNUM←TTLEN←TTIT←NULL;
.RSPIC;
.PICLIN←TLIN; PICNUM←TNUM; PICTLEN←TTLEN; PICTIT←TTIT;
.IF LINES<2*SPREAD-1 THEN NEXT PAGE ⊃

.RECURSIVE MACRO ALLPIC ⊂
.IF PICLIN≠NULL THEN SMALLPIC;;
.IF PICLIN≠NULL THEN BEGIN PLACEPIC; ALLPIC END ⊃

.AT NULL ⊂IF FILLING THEN
.    START BREAK;
.    IF PICLIN≠NULL THEN SMALLPIC;
.    IF LINES<2*SPREAD+1 THEN NEXT PAGE END
.  ELSE SKIP SPREAD⊃;

.BEFORE PAGE ⊂STANDARD TITLES;
.    IF PICLIN≠NULL THEN SMALLPIC ⊃

.END COMMENT PICTURE MACROS;
 



.BOTTOM←50;
.MACRO FULL⊂BOTTOM-3*SPREAD⊃
.MACRO HALF⊂BOTTOM/2-3*SPREAD⊃
.MACRO THIRD⊂BOTTOM/3-3*SPREAD⊃

.SECNAME←NULL
 

.device xgp
.IF XCRIBL THEN FONT 1 "BASL30[HAL,HE]"
.IF XCRIBL THEN FONT 4 "BASI30[HAL,HE]"
.IF XCRIBL THEN FONT 5 "BASB30"
.IF XCRIBL THEN FONT 6 "BDR40"
.IF XCRIBL THEN FONT 7 "LPT"

.IF XCRIBL THEN START
.!xgplftmar← 200
.END
.PAGE FRAME 53 HIGH 80 WIDE;
.TITLE AREA HEADING LINES 1 TO 4 CHARS 1 TO 80;
.AREA TEXT LINES 5 TO 53 CHARS 1 TO 80;
.TURN ON "%\"
.TABS 17
.SECID←"CHAPTER";
.SECNAME←NULL
.COUNT PAGE FROM 1 TO 999 PRINTING ⊂PAGE⊃;
.IF XCRIBL THEN SELECT 1 

.NEXT PAGE
.SSECNAME←NULL;
.PORTION TITLEPAGE
.BEGIN NOFILL;turn on "↑";
.AREA TEXT LINES 1 TO 53 CHARS 1 TO 80
.NEXT PAGE
.GROUP SKIP 1
%1STANFORD ARTIFICIAL INTELLIGENCE LABORATORY →NOVEMBER 1974
MEMO AIM-243
.GROUP SKIP 2
COMPUTER SCIENCE DEPARTMENT
REPORT CS-456
.GROUP SKIP 4
.NOFILL CENTER
%6AL, A Programming System for Automation
.GROUP SKIP 4
%1Raphael Finkel, Russell Taylor, Robert Bolles, Richard Paul, Jerome Feldman↑*


.GROUP SKIP 5
.FILL ADJUST COMPACT
.NARROW 8,8
AL is an high-level programming system for specification of manipulatory tasks
such as assembly of an object from parts.
AL includes an ALGOL-like source language,
a translator for converting programs into runnable code, and a runtime system
for controlling manipulators and other devices.  The system includes
advanced features for describing individual motions of manipulators, for using
sensory information, and for describing assembly algorithms in terms
of common domain-specific primitives.  This document describes the design
of AL, which is currently being implemented as a successor to the Stanford WAVE
system.
.WIDEN
.NOFILL SKIP TO LINE 37
.FILL
∞_→#
.BREAK
%4↑* Jerome Feldman is now at the University of Rochester.

This research was supported in part by the
National Science Foundation under contract No. GIα-42906 and in part by
the Advanced Research
Projects Agency of the Office of Defense under Contract No. DAHC-15-73-C-0435.

The views and conclusions in this document are those of the authors and 
should not be interpreted as necessarily representing the official policies,
either expressed or implied, of the
funding agencies.

Reproduced in the USA. Available from the National Technical Information
Service, Springfield, Virginia 22151.%*
.END

.ADJUST COMPACT
.SECNAME←NULL
.SSECNAME←NULL
.SSSNUM←NULL
.INSERT CONTENTS
.PORTION BODY;
.COUNT PAGE FROM 1 TO 999 PRINTING ⊂PAGE⊃;
.EVEN HEADING(Page {PAGE!},{SSECNAME},{SSSNUM});
.ODD HEADING({SSSNUM},{SSECNAME},Page {PAGE!});
.NEXT PAGE
.REQUIRE "MINTRO.PUB" SOURCE_FILE; <<MEMO25(2) Introduction>>
.REQUIRE "MGOALS.PUB" SOURCE_FILE; <<MEMO25(3:6) Goals>>
.REQUIRE "MSYSOL.PUB" SOURCE_FILE; <<MEMO25(7),61(2) System outline>>
.REQUIRE "MUSER.PUB"  SOURCE_FILE; <<MEMO8(2) User features>>
.REQUIRE "MDATST.PUB" SOURCE_FILE; <<MEMO61(8:11) Data structures>>
.REQUIRE "MMOTNS.PUB" SOURCE_FILE; <<MEMO61(12:17) Motion specs>>
.REQUIRE "MGRAPH.PUB" SOURCE_FILE; <<graph structures (subsection) >>
.REQUIRE "MCTRST.PUB" SOURCE_FILE; <<MEMO61(3:7) Control structures>>
.REQUIRE "MCTCST.PUB" SOURCE_FILE; <<MEMO61(18,19),63(2:7) Compile time constructs>>
.REQUIRE "MLIBRT.PUB" SOURCE_FILE; <<MEMO63(8) Library routines>>
.REQUIRE "MVHL.PUB"   SOURCE_FILE; <<MEMO64 Very high level>>
.REQUIRE "MRUNTM.PUB" SOURCE_FILE; <<MEMO7 Runtime overview>>
.REQUIRE "MEXTEN.PUB" SOURCE_FILE; <<MEMO9 Extensions>>
.REQUIRE "MBIB.PUB"   SOURCE_FILE; <<MEMO10 Bibliography>>

.PORTION APPENDIX
.SECID←"APPENDIX";
.SEND CONTENTS ⊂

APPENDICES
.⊃
.COUNT SECTION FROM 1 TO 99 PRINTING  "I";
.COUNT SUBSEC FROM 0 TO 9 IN SECTION PRINTING "!.1";
.COUNT SUBSUBSEC FROM 0 TO 99 IN SUBSEC PRINTING "!.1";
.REQUIRE "MDIALG.PUB" SOURCE_FILE; <<MEMO8(3) Dialog>>
.REQUIRE "MXMPLS.PUB" SOURCE_FILE; <<XMPLES Examples:  appendix>>
.REQUIRE "MRTAPP.PUB" SOURCE_FILE; <<RUNTIM Runtime details:  appendix>>

.PORTION CONTENTS
.COUNT PAGE FROM 2 PRINTING "i";
.SSECNAME←"FOREWORD";
.SSSNUM ← NULL;
.SECNAME←"FOREWORD";
.NEXT PAGE
	This document describes  the new hand  language, AL.   It is
not intended to be a final language specification or a user's manual.
Rather, it is  a working document presenting a number of  related
ideas concerning a  system for programmable automation.   These ideas
cover  a broad range  of topics: arm servoing,   parallel processing,
assembly world modelling,  strategists, and language design.  We have
tried to combine these into  a coherent system.  However, as you read
this document you  will notice  that some topics  have been  explored
more than others, some explanations contain more detail than others,
and  some questions  are left  unanswered.   Various portions  of the
system have already been implemented. 

	Interested persons unfamiliar with the background for this work
will find it useful to read %4The Use of Sensory Feedback in a 
Programmable Assembly System%* [Bolles and Paul].

	We would  like to thank  those people  who have  made
numerous suggestions  and have helped implement  various parts of the
system.   
In particular, we  would to  thank Bertrand  Meyer, who  
implemented  the   scanner  and  parser,   Botond Eross,   who  is
implementing  the PDP11  runtime monitor,
Bruce Baumgart, who assisted with the illustrations,
and Larry Tesler, whose document preparation program PUB was used
to prepare this paper.
We also wish to thank D. Whitney, J. Nevins, and D. Killoran of
Draper Labs and W. Park of Stanford Research Institute for their
helpful criticisms and suggestions.


During the period in which the work reported here was performed,
Russ Taylor was supported in part by a grant from the Alcoa Foundation,
Raphael Finkel was supported by a NSF fellowship, and Robert Bolles
was supported in part by the Hertz Foundation.  We would like to
thank all these agencies for their kind assistance.

	The English language has no genderless personal pronoun; without
any implication of sexism we use arbitrary forms in its place.


.SSECNAME←"TABLE OF CONTENTS";
.SECNAME←"TABLE OF CONTENTS";
.NEXT PAGE
.INDENT 0
.NOFILL
.TURN ON "∞→"
CHAPTER →PAGE
.RECEIVE